package com.wgy.designmode.structure.facade;

import com.wgy.designmode.structure.facade.component.Component;
import com.wgy.designmode.structure.facade.component.Cpu;
import com.wgy.designmode.structure.facade.component.Ddr;
import com.wgy.designmode.structure.facade.component.Ssd;
import com.wgy.designmode.structure.facade.facade.Computer;

/**
 * 外观模式
 * 示例：cpu、硬盘、内存作为内部组件，电脑作为外观暴露出去，用户只需要操作电脑接口实现电脑启停。
 * 使用场景：当客户端不需要了解系统内部的复杂逻辑和组件交互时；当需要为整个系统定义一个清晰的入口点时。
 */
public class FacadePatternDemo {


    public static void main(String[] args) {
        Component cpu = new Cpu();

        Component ddr = new Ddr();

        Component ssd = new Ssd();

        Computer computer = new Computer(cpu, ddr, ssd);

        computer.start();

        System.out.println("--------------电脑工作中-------------");

        computer.shutdown();
    }

}
